package dao.mysql;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import util.DataBaseConnection;
import bean.Detalle_guia_de_salida;
import dao.Entidad;

public class MySQLDetalle_guia_de_salidaDAO implements Entidad<Detalle_guia_de_salida>{

	@Override
	public Detalle_guia_de_salida insert(Detalle_guia_de_salida t) {
		Connection con=null;
		try {
			con=DataBaseConnection.openConnection();
			String sql="INSERT INTO detalle_guia_de_salida(id_producto,id_guia_de_salida,cantidad) ";
			sql=sql + " values(?,?,?)";
			PreparedStatement ps=con.prepareStatement(sql);
			ps.setInt(1, t.getId_producto());
			ps.setInt(2, t.getId_guia_de_salida());
			ps.setInt(3, t.getCantidad());
			ps.executeUpdate();	
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return t;
	}

	@Override
	public int update(Detalle_guia_de_salida t) {

		Connection con=null;
		int rows = -1;
		try {
			con=DataBaseConnection.openConnection();
			String sql="UPDATE detalle_guia_de_salida SET cantidad=? ";
			sql = sql +	" WHERE id_producto =?, id_guia_de_salida=?";
			PreparedStatement ps=con.prepareStatement(sql);
			ps.setInt(1, t.getCantidad());
			ps.setInt(2, t.getId_producto());
			ps.setInt(3, t.getId_guia_de_salida());
			rows =ps.executeUpdate();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return rows;		
	}

	@Override
	public int delete(Detalle_guia_de_salida t) {
		Connection con=null;
		int rows=-1;
		try {
			con=DataBaseConnection.openConnection();
			String sql="DELETE FROM detalle_guia_de_salida WHERE id_producto =?, id_guia_de_salida=?";
			PreparedStatement ps=con.prepareStatement(sql);
			ps.setInt(1, t.getId_producto());
			ps.setInt(2, t.getId_guia_de_salida());
			rows=ps.executeUpdate();
			System.out.println(rows);
				
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return rows;
	}

	@Override
	public Detalle_guia_de_salida findById(Detalle_guia_de_salida t) {
		Connection con=null;
		try {
			con=DataBaseConnection.openConnection();
			String sql="SELECT * FROM detalle_guia_de_salida WHERE id_producto =?, id_guia_de_salida=?";
			PreparedStatement ps=con.prepareStatement(sql);
			ps.setInt(1, t.getId_producto());
			ps.setInt(2, t.getId_guia_de_salida());
			ResultSet rs=ps.executeQuery();
			while(rs.next()){
				t.setId_producto(rs.getInt("id_producto"));
				t.setId_guia_de_salida(rs.getInt("id_guia_de_salida"));
				t.setCantidad(rs.getInt("cantidad"));
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return t;
	}

	@Override
	public List<Detalle_guia_de_salida> listAll() {
		List<Detalle_guia_de_salida> det_guia = new ArrayList<Detalle_guia_de_salida>();
		Connection con=null;
		try {
			con=DataBaseConnection.openConnection();
			String sql="Select * from detalle_guia_de_salida";
			Statement st=con.createStatement();
			ResultSet rs=st.executeQuery(sql);
			while(rs.next()){
				Detalle_guia_de_salida t = new Detalle_guia_de_salida();
				t.setId_producto(rs.getInt("id_producto"));
				t.setId_guia_de_salida(rs.getInt("id_guia_de_salida"));
				t.setCantidad(rs.getInt("cantidad"));
				det_guia.add(t);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			DataBaseConnection.closeConnection(con);
		}
		return det_guia;
	}

	@Override
	public List<Detalle_guia_de_salida> listAllCustom(Object... objects) {
		// TODO Auto-generated method stub
		return null;
	}

}
